from drf_haystack.serializers import HaystackSerializer
from rest_framework import serializers

from goods.models import SKU
from goods.search_indexes import SKUIndex


class SKUSerializer(serializers.ModelSerializer):
    """SKU序列化器"""

    class Meta:
        model = SKU
        fields = ['id', 'name', 'price', 'default_image_url', 'comments']


class SKUIndexSerializer(HaystackSerializer):
    """SKU索引结果数据序列化器"""
    # object保存检索匹配关键词的搜索结果后的完整数据库模型类对象,并且进行序列化,这里指明序列化器进行处理; 只读,不可进行反序列化
    object = SKUSerializer(read_only=True)

    class Meta:
        # 索引类的名称,可以有多个
        index_classes = [SKUIndex]
        # 注意: fields属性的字段名与SKUIndex类的字段对应,具体如下
        fields = (
            'text',  # 用于接受查询关键字
            'object'  # 用于返回查询结果
        )
